import request from '@/utils/request'
import { ProductQuery, ProductVO, ProductForm } from './types'
import { AxiosPromise } from 'axios'
import { BrandOption, CategoryOption } from './types'

/**
 * 查询商品列表
 * @param query 查询参数
 * @returns 商品列表
 */
export function listProduct(query: ProductQuery) {
    return request({
        url: '/product/product/list',
        method: 'get',
        params: query
    })
}

/**
 * 获取商品详细信息
 * @param id 商品ID
 * @returns 商品信息
 */
export function getProduct(id: number): AxiosPromise<ProductVO> {
    return request({
        url: `/product/product/${id}`,
        method: 'get'
    })
}

/**
 * 新增商品
 * @param data 商品信息
 * @returns 结果
 */
export function addProduct(data: ProductForm) {
    return request({
        url: '/product/product',
        method: 'post',
        data: data
    })
}

/**
 * 修改商品
 * @param data 商品信息
 * @returns 结果
 */
export function updateProduct(data: ProductForm) {
    return request({
        url: '/product/product',
        method: 'put',
        data: data
    })
}

/**
 * 删除商品
 * @param id 商品ID
 * @returns 结果
 */
export function delProduct(id: number) {
    return request({
        url: `/product/product/${id}`,
        method: 'delete'
    })
}

/**
 * 批量删除商品
 * @param ids 商品ID数组
 * @returns 结果
 */
export function delProductBatch(ids: number[]) {
    return request({
        url: `/product/product/batch/${ids}`,
        method: 'delete'
    })
}

/**
 * 获取品牌列表
 * @returns 品牌列表
 */
export function listBrand(): AxiosPromise<BrandOption[]> {
    return request({
        url: '/product/brand/list',
        method: 'get'
    })
}

/**
 * 获取分类列表
 * @returns 分类列表
 */
export function listCategory(): AxiosPromise<CategoryOption[]> {
    return request({
        url: '/product/category/list',
        method: 'get'
    })
} 